package erwiki.ui.app.parts.navigation.handlers;

import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.jface.dialogs.MessageDialog;
import org.elwiki_data.WikiPage;

import erwiki.api.core.Engine;
import erwiki.api.exceptions.ProviderException;
import erwiki.api.pages.PageManager;
import erwiki.ui.app.parts.navigation.NavigationView;
import jakarta.inject.Inject;

public class RemovePage {

	@Inject
	Engine engine;

	@Execute
	public void execute(EPartService partService) {
		// workaround - получить выбранную страницу.
		MPart part = partService.findPart(NavigationView.ID);
		NavigationView navigationView = (NavigationView) part.getObject();
		WikiPage selectedWikiPage = navigationView.getSelectedWikiPage();

		boolean answer = MessageDialog.openQuestion(null, "Удаление страницы",
				"Вы действительно желаете удалить страницу\n\"" + selectedWikiPage.getName() + "\"");
		if (answer == true) {
			PageManager pageManager = engine.getManager(PageManager.class);
			try {
				pageManager.deletePage(selectedWikiPage);
			} catch (ProviderException e) {
				MessageDialog.openError(null, "Error remove page.", e.getMessage());
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	@CanExecute
	public boolean canExecute() {
		// TODO: проверка доступа.
		// Действие Pop-up меню для изменения данных доступно только пользователям соответствующей роли. */
		return true;
	}

}
